package arsw.twitter.cliente;

import java.rmi.RemoteException;
import arsw.twitter.common.IController;
import arsw.twitter.common.IControllerRemote;
import arsw.twitter.common.Mensaje;

public class ProxyController implements IController {

	private IControllerRemote controllerRemote;
	private ProxyController(IControllerRemote controllerRemote) {
		this.controllerRemote = controllerRemote;
	}
	
	static public ProxyController newInstance(IControllerRemote controllerRemote) {
		return new ProxyController(controllerRemote);
	}
	
	@Override
	public void registrarUsuario(String name) {
		try{
			controllerRemote.registrarUsuario(name);
		} catch(RemoteException r){
		r.printStackTrace();
		}
	}

	@Override
	public boolean esUsuarioRegistrado(String name) {
		boolean resp = false;
		try{
			resp |= controllerRemote.esUsuarioRegistrado(name);
		} catch(RemoteException r){
		r.printStackTrace();
		}
		return resp;
	}

	@Override
	public void publicar(String user, String message) {
		try {
			controllerRemote.publicar(user, message);
		} catch (RemoteException e) {
			e.printStackTrace();
		}
	}

	@Override
	public void seguir(String observerId, String subjectId) {
		try {
			controllerRemote.seguir(observerId, subjectId);
		} catch (RemoteException e) {
			e.printStackTrace();
		}

	}

	@Override
	public void suspender(String observerId, String subjectId) {
		try {
			controllerRemote.suspender(observerId, subjectId);
		} catch (RemoteException e) {
			e.printStackTrace();
		}
	}

	@Override
	public void darDeBajaUsuario(String name) {
		try {
			controllerRemote.darDeBajaUsuario(name);
		} catch (RemoteException e) {
			e.printStackTrace();
		}
	}

	@Override
	public Iterable<Mensaje> leerMensajes(String name) {
		Iterable<Mensaje> iter = null;
		try {
			iter = controllerRemote.leerMensajes(name);
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return iter;
	}

}